/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Persistencia;

import Logica.*;
import Persistencia.exceptions.NonexistentEntityException;
import Persistencia.exceptions.PreexistingEntityException;
import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

/**
 *
 * @author Pablo
 */
public class ControladoraPersistencia implements Serializable{

    AnomaliaJpaController miAnomaliaJpa = new AnomaliaJpaController();
    CategoriaEmpJpaController miCategoriaEmpJpa = new CategoriaEmpJpaController();
    ClienteJpaController miClienteJpa = new ClienteJpaController();
    DiaLaboralJpaController miDiaLaboralJpa = new DiaLaboralJpaController();
    DiagnosticoJpaController miDiagnosticoJpa = new DiagnosticoJpaController();
    EmpleadoJpaController miEmpleadoJpa = new EmpleadoJpaController();
    EspecialidadJpaController miEspecialidadJpa = new EspecialidadJpaController();
    EstadoVehiculoJpaController miEstadoVehiculoJpa = new EstadoVehiculoJpaController();
    GarantiaJpaController miGarantiaJpa = new GarantiaJpaController();
    ImportanciaJpaController miImportanciaJpa = new ImportanciaJpaController();
    LocalidadJpaController miLocalidadJpa = new LocalidadJpaController();
    MarcaJpaController miMarcaJpa = new MarcaJpaController();
    ModeloJpaController miModeloJpa = new ModeloJpaController();
    OperacionJpaController miOperacionJpa = new OperacionJpaController();
    PedidoRepuestoJpaController miPedidoRepuestoJpa = new PedidoRepuestoJpaController();
    ProveedorJpaController miProveedorJpa = new ProveedorJpaController();
    ReparacionJpaController miReparacionJpa = new ReparacionJpaController();
    RepuestoJpaController miRepuestoJpa = new RepuestoJpaController();
    SegmentoJpaController miSegmentoJpa = new SegmentoJpaController();
    SeveridadJpaController miSeveridadJpa = new SeveridadJpaController();
    TallerJpaController miTallerJpa = new TallerJpaController();
    TipoOperacionJpaController miTipoOperacionJpa = new TipoOperacionJpaController();
    TurnoJpaController miTurnoJpa = new TurnoJpaController();
    VehiculoJpaController miVehiculoJpa = new VehiculoJpaController();
    DetalleEjecucionJpaController miDetalleEjecucionJpa = new DetalleEjecucionJpaController();
    EstadoEjecucionJpaController miEstadoEjecucionJpa = new EstadoEjecucionJpaController();
    ReparacionEnEjecucionJpaController miReparacionEnEjecucionJpa = new ReparacionEnEjecucionJpaController();

    ///// CREAR /////
    public void crearAnomalia(Anomalia unaAnomalia) throws PreexistingEntityException, Exception {
        miAnomaliaJpa.create(unaAnomalia);
    }

    public void crearCategoriaEmp(CategoriaEmp unaCategoriaEmp) throws PreexistingEntityException, Exception {
        miCategoriaEmpJpa.create(unaCategoriaEmp);
    }

    public void crearCliente(Cliente unCliente) throws PreexistingEntityException, Exception {
        miClienteJpa.create(unCliente);
    }

    public void crearDiaLaboral(DiaLaboral unDiaLaboral) throws PreexistingEntityException, Exception {
        miDiaLaboralJpa.create(unDiaLaboral);
    }

    public void crearDiagnostico(Diagnostico unDiagnostico) throws PreexistingEntityException, Exception {
        miDiagnosticoJpa.create(unDiagnostico);
    }

    public void crearEmpleado(Empleado unEmpleado) throws PreexistingEntityException, Exception {
        miEmpleadoJpa.create(unEmpleado);
    }

    public void crearEspecialidad(Especialidad unaEspecialidad) throws PreexistingEntityException, Exception {
        miEspecialidadJpa.create(unaEspecialidad);
    }

    public void crearEstadoVehiculo(EstadoVehiculo unEstadoVehiculo) throws PreexistingEntityException, Exception {
        miEstadoVehiculoJpa.create(unEstadoVehiculo);
    }

    public void crearGarantia(Garantia unaGarantia) throws PreexistingEntityException, Exception {
        miGarantiaJpa.create(unaGarantia);
    }

    public void crearImportancia(Importancia unaImportancia) throws PreexistingEntityException, Exception {
        miImportanciaJpa.create(unaImportancia);
    }

    public void crearLocalidad(Localidad unaLocalidad) throws PreexistingEntityException, Exception {
        miLocalidadJpa.create(unaLocalidad);
    }

    public void crearMarca(Marca unaMarca) throws PreexistingEntityException, Exception {
        miMarcaJpa.create(unaMarca);
    }

    public void crearModelo(Modelo unModelo) throws PreexistingEntityException, Exception {
        miModeloJpa.create(unModelo);
    }

    public void crearOperacion(Operacion unaOperacion) throws PreexistingEntityException, Exception {
        miOperacionJpa.create(unaOperacion);
    }

    public void crearPedidoRepuesto(PedidoRepuesto unPedidoRepuesto) throws PreexistingEntityException, Exception {
        miPedidoRepuestoJpa.create(unPedidoRepuesto);
    }

    public void crearProveedor(Proveedor unProveedor) throws PreexistingEntityException, Exception {
        miProveedorJpa.create(unProveedor);
    }

    public void crearReparacion(Reparacion unaReparacion) throws PreexistingEntityException, Exception {
        miReparacionJpa.create(unaReparacion);
    }

    public void crearRepuesto(Repuesto unRepuesto) throws PreexistingEntityException, Exception {
        miRepuestoJpa.create(unRepuesto);
    }

    public void crearSegmento(Segmento unSegmento) throws PreexistingEntityException, Exception {
        miSegmentoJpa.create(unSegmento);
    }

    public void crearSeveridad(Severidad unaSeveridad) throws PreexistingEntityException, Exception {
        miSeveridadJpa.create(unaSeveridad);
    }

    public void crearTaller(Taller unTaller) throws PreexistingEntityException, Exception {
        miTallerJpa.create(unTaller);
    }

    public void crearTipoOperacion(TipoOperacion unTipoOperacion) throws PreexistingEntityException, Exception {
        miTipoOperacionJpa.create(unTipoOperacion);
    }

    public void crearTurno(Turno unTurno) throws PreexistingEntityException, Exception {
        miTurnoJpa.create(unTurno);
    }

    public void crearVehiculo(Vehiculo unVehiculo) throws PreexistingEntityException, Exception {
        miVehiculoJpa.create(unVehiculo);
    }

    public void crearEstadoEjecucion(EstadoEjecucion unEstadoEjecucion) throws PreexistingEntityException, Exception {
        miEstadoEjecucionJpa.create(unEstadoEjecucion);
    }
    
     public void crearDetalleEjecucion(DetalleEjecucion unDetalleEjecucion) throws PreexistingEntityException, Exception {
        miDetalleEjecucionJpa.create(unDetalleEjecucion);
    }
     
     public void crearReparacionEnEjecucion(ReparacionEnEjecucion unaReparacionEnEjecucion) throws PreexistingEntityException, Exception {
        miReparacionEnEjecucionJpa.create(unaReparacionEnEjecucion);
    }
    ///// EDITAR /////
    public void editarAnomalia(Anomalia unaAnomalia) throws NonexistentEntityException, Exception {
        miAnomaliaJpa.edit(unaAnomalia);
    }

    public void editarCategoriaEmp(CategoriaEmp unaCategoriaEmp) throws NonexistentEntityException, Exception {
        miCategoriaEmpJpa.edit(unaCategoriaEmp);
    }

    public void editarCliente(Cliente unCliente) throws NonexistentEntityException, Exception {
        miClienteJpa.edit(unCliente);
    }

    public void editarDiaLaboral(DiaLaboral unDiaLaboral) throws NonexistentEntityException, Exception {
        miDiaLaboralJpa.edit(unDiaLaboral);
    }

    public void editarDiagnostico(Diagnostico unDiagnostico) throws NonexistentEntityException, Exception {
        miDiagnosticoJpa.edit(unDiagnostico);
    }

    public void editarEmpleado(Empleado unEmpleado) throws NonexistentEntityException, Exception {
        miEmpleadoJpa.edit(unEmpleado);
    }

    public void editarEspecialidad(Especialidad unaEspecialidad) throws NonexistentEntityException, Exception {
        miEspecialidadJpa.edit(unaEspecialidad);
    }

    public void editarEstadoVehiculo(EstadoVehiculo unEstadoVehiculo) throws NonexistentEntityException, Exception {
        miEstadoVehiculoJpa.edit(unEstadoVehiculo);
    }

    public void editarGarantia(Garantia unaGarantia) throws NonexistentEntityException, Exception {
        miGarantiaJpa.edit(unaGarantia);
    }

    public void editarImportancia(Importancia unaImportancia) throws NonexistentEntityException, Exception {
        miImportanciaJpa.edit(unaImportancia);
    }

    public void editarLocalidad(Localidad unaLocalidad) throws NonexistentEntityException, Exception {
        miLocalidadJpa.edit(unaLocalidad);
    }

    public void editarMarca(Marca unaMarca) throws NonexistentEntityException, Exception {

        miMarcaJpa.edit(unaMarca);
    }

    public void editarModelo(Modelo unModelo) throws NonexistentEntityException, Exception {
        miModeloJpa.edit(unModelo);
    }

    public void editarOperacion(Operacion unaOperacion) throws NonexistentEntityException, Exception {
        miOperacionJpa.edit(unaOperacion);
    }

    public void editarPedidoRepuesto(PedidoRepuesto unPedidoRepuesto) throws NonexistentEntityException, Exception {
        miPedidoRepuestoJpa.edit(unPedidoRepuesto);
    }

    public void editarProveedor(Proveedor unProveedor) throws NonexistentEntityException, Exception {
        miProveedorJpa.edit(unProveedor);
    }

    public void editarReparacion(Reparacion unaReparacion) throws NonexistentEntityException, Exception {
        miReparacionJpa.edit(unaReparacion);
    }

    public void editarRepuesto(Repuesto unRepuesto) throws NonexistentEntityException, Exception {
        miRepuestoJpa.edit(unRepuesto);
    }

    public void editarSegmento(Segmento unSegmento) throws NonexistentEntityException, Exception {
        miSegmentoJpa.edit(unSegmento);
    }

    public void editarSeveridad(Severidad unaSeveridad) throws NonexistentEntityException, Exception {
        miSeveridadJpa.edit(unaSeveridad);
    }

    public void editarTaller(Taller unTaller) throws NonexistentEntityException, Exception {
        miTallerJpa.edit(unTaller);
    }

    public void editarTipoOperacion(TipoOperacion unTipoOperacion) throws NonexistentEntityException, Exception {
        miTipoOperacionJpa.edit(unTipoOperacion);
    }

    public void editarTurno(Turno unTurno) throws NonexistentEntityException, Exception {
        miTurnoJpa.edit(unTurno);
    }

    public void editarVehiculo(Vehiculo unVehiculo) throws NonexistentEntityException, Exception {
        miVehiculoJpa.edit(unVehiculo);
    }
    
     public void editarEstadoEjecucion(EstadoEjecucion unEstadoEjecucion) throws NonexistentEntityException, Exception {
        miEstadoEjecucionJpa.edit(unEstadoEjecucion);
    }
      public void editarDetalleEjecucion(DetalleEjecucion unDetalleEjecucion) throws NonexistentEntityException, Exception {
        miDetalleEjecucionJpa.edit(unDetalleEjecucion);
    }
       public void editarReparacionEnEjecucion(ReparacionEnEjecucion unaReparacionEnEjecucion) throws NonexistentEntityException, Exception {
        miReparacionEnEjecucionJpa.edit(unaReparacionEnEjecucion);
    }

    ///// ELIMINAR /////
    public void eliminarAnomalia(String nombre) throws NonexistentEntityException {
        miAnomaliaJpa.destroy(nombre);
    }

    public void eliminarCategoriaEmp(String nombre) throws NonexistentEntityException {
        miCategoriaEmpJpa.destroy(nombre);
    }

    public void eliminarCliente(double nroDoc) throws NonexistentEntityException {
        miClienteJpa.destroy(nroDoc);
    }

    public void eliminarDiaLaboral(Calendar fecha) throws NonexistentEntityException {
        miDiaLaboralJpa.destroy(fecha);
    }

    public void eliminarDiagnostico(int nroDiagnostico) throws NonexistentEntityException {
        miDiagnosticoJpa.destroy(nroDiagnostico);
    }

    public void eliminarEmpleado(double nroDoc) throws NonexistentEntityException {
        miEmpleadoJpa.destroy(nroDoc);
    }

    public void eliminarEspecialidad(String nombre) throws NonexistentEntityException {
        miEspecialidadJpa.destroy(nombre);
    }

    public void eliminarEstadoVehiculo(int codigoEstado) throws NonexistentEntityException {
        miEstadoVehiculoJpa.destroy(codigoEstado);
    }

    public void eliminarGarantia(int nroGarantia) throws NonexistentEntityException {
        miGarantiaJpa.destroy(nroGarantia);
    }

    public void eliminarImportancia(String nivel) throws NonexistentEntityException {
        miImportanciaJpa.destroy(nivel);
    }

    public void eliminarLocalidad(int codigo) throws NonexistentEntityException {
        miLocalidadJpa.destroy(codigo);
    }

    public void eliminarMarca(String nombre) throws NonexistentEntityException {
        miMarcaJpa.destroy(nombre);
    }

    public void eliminarModelo(String nombre) throws NonexistentEntityException {
        miModeloJpa.destroy(nombre);
    }

    public void eliminarOperacion(int codigo) throws NonexistentEntityException {
        miOperacionJpa.destroy(codigo);
    }

    public void eliminarPedidoRepuesto(int nroPedido) throws NonexistentEntityException {
        miPedidoRepuestoJpa.destroy(nroPedido);
    }

    public void eliminarProveedor(String razonSocial) throws NonexistentEntityException {
        miProveedorJpa.destroy(razonSocial);
    }

    public void eliminarReparacion(int nroReparacion) throws NonexistentEntityException {
        miReparacionJpa.destroy(nroReparacion);
    }

    public void eliminarRepuesto(int codigo) throws NonexistentEntityException {
        miRepuestoJpa.destroy(codigo);
    }

    public void eliminarSegmento(String nombre) throws NonexistentEntityException {
        miSegmentoJpa.destroy(nombre);
    }

    public void eliminarSeveridad(int nivel) throws NonexistentEntityException {
        miSeveridadJpa.destroy(nivel);
    }

    public void eliminarTaller(int nroTaller) throws NonexistentEntityException {
        miTallerJpa.destroy(nroTaller);
    }

    public void eliminarTipoOperacion(String nombre) throws NonexistentEntityException {
        miTipoOperacionJpa.destroy(nombre);
    }

    public void eliminarTurno(int nroTurno) throws NonexistentEntityException {
        miTurnoJpa.destroy(nroTurno);
    }

    public void eliminarVehiculo(String nroChasis) throws NonexistentEntityException {
        miVehiculoJpa.destroy(nroChasis);
    }
      public void eliminarEstadoEjecucion(int nroEstado) throws NonexistentEntityException {
        miEstadoEjecucionJpa.destroy(nroEstado);
    }
        public void eliminarDetalleEjecucion(int nroDetalle) throws NonexistentEntityException {
        miDetalleEjecucionJpa.destroy(nroDetalle);
    }
          public void eliminarReparacionEnEjecucion(int nroReparacionEnEjecucion) throws NonexistentEntityException {
        miReparacionEnEjecucionJpa.destroy(nroReparacionEnEjecucion);
    }

    ///// DAME UNO /////
    public Anomalia dameAnomalia(String nombre) {
        return miAnomaliaJpa.findAnomalia(nombre);
    }

    public CategoriaEmp dameCategoriaEmp(String nombre) {
        return miCategoriaEmpJpa.findCategoriaEmp(nombre);
    }

    public Cliente dameCliente(double nroDoc) {
        return miClienteJpa.findCliente(nroDoc);
    }

    public DiaLaboral dameDiaLaboral(Calendar fecha) {
        return miDiaLaboralJpa.findDiaLaboral(fecha);
    }

    public Diagnostico dameDiagnostico(int nroDiagnostico) {
        return miDiagnosticoJpa.findDiagnostico(nroDiagnostico);
    }

    public Empleado dameEmpleado(double nroDoc) {
        return miEmpleadoJpa.findEmpleado(nroDoc);
    }

    public Especialidad dameEspecialidad(String nombre) {
        return miEspecialidadJpa.findEspecialidad(nombre);
    }

    public EstadoVehiculo dameEstadoVehiculo(int codigoEstado) {
        return miEstadoVehiculoJpa.findEstadoVehiculo(codigoEstado);
    }

    public Garantia dameGarantia(int nroGarantia) {
        return miGarantiaJpa.findGarantia(nroGarantia);
    }

    public Importancia dameImportancia(String nivel) {
        return miImportanciaJpa.findImportancia(nivel);
    }

    public Localidad dameLocalidad(int codigo) {
        return miLocalidadJpa.findLocalidad(codigo);
    }

    public Marca dameMarca(String nombre) {
        return miMarcaJpa.findMarca(nombre);
    }

    public Modelo dameModelo(String nombre) {
        return miModeloJpa.findModelo(nombre);
    }

    public Operacion dame(int codigo) {
        return miOperacionJpa.findOperacion(codigo);
    }

    public PedidoRepuesto damePedidoRepuesto(int nroPedido) {
        return miPedidoRepuestoJpa.findPedidoRepuesto(nroPedido);
    }

    public Proveedor dameProveedor(String razonSocial) {
        return miProveedorJpa.findProveedor(razonSocial);
    }

    public Reparacion dameReparacion(int nroReparacion) {
        return miReparacionJpa.findReparacion(nroReparacion);
    }

    public Repuesto dameRepuesto(int codigo) {
        return miRepuestoJpa.findRepuesto(codigo);
    }

    public Segmento dameSegmento(String nombre) {
        return miSegmentoJpa.findSegmento(nombre);
    }

    public Severidad dameSeveridad(int nivel) {
        return miSeveridadJpa.findSeveridad(nivel);
    }

    public Taller dameTaller(int nroTaller) {
        return miTallerJpa.findTaller(nroTaller);
    }

    public TipoOperacion dameTipoOperacion(String nombre) {
        return miTipoOperacionJpa.findTipoOperacion(nombre);
    }

    public Turno dameTurno(int nroTurno) {
        return miTurnoJpa.findTurno(nroTurno);
    }

    public Vehiculo dameVehiculo(String nroChasis) {
        return miVehiculoJpa.findVehiculo(nroChasis);
    }
     public EstadoEjecucion dameEstadoEjecucion(int nroEstado) {
        return miEstadoEjecucionJpa.findEstadoEjecucion(nroEstado);
    }
      public DetalleEjecucion dameDetalleEjecucion(int nroDetalle) {
        return miDetalleEjecucionJpa.findDetalleEjecucion(nroDetalle);
    }
       public ReparacionEnEjecucion dameReparacionEnEjecucion(int nroReparacionEnEjecucion) {
        return miReparacionEnEjecucionJpa.findReparacionEnEjecucion(nroReparacionEnEjecucion);
    }

    ///// DAME TODOS /////
    public List<Anomalia> dameAnomalias() {
        return miAnomaliaJpa.findAnomaliaEntities();
    }

    public List<CategoriaEmp> dameCategoriasEmp() {
        return miCategoriaEmpJpa.findCategoriaEmpEntities();
    }

    public List<Cliente> dameClientes() {
        return miClienteJpa.findClienteEntities();
    }

    public List<DiaLaboral> dameDiaLaborales() {
        return miDiaLaboralJpa.findDiaLaboralEntities();
    }

    public List<Diagnostico> dameDiagnosticos() {
        return miDiagnosticoJpa.findDiagnosticoEntities();
    }

    public List<Empleado> dameEmpleados() {
        return miEmpleadoJpa.findEmpleadoEntities();
    }

    public List<Especialidad> dameEspecialidades() {
        return miEspecialidadJpa.findEspecialidadEntities();
    }

    public List<EstadoVehiculo> dameEstadosVehiculo() {
        return miEstadoVehiculoJpa.findEstadoVehiculoEntities();
    }

    public List<Importancia> dameImportancias() {
        return miImportanciaJpa.findImportanciaEntities();
    }

    public List<Garantia> dameGarantias() {
        return miGarantiaJpa.findGarantiaEntities();
    }



    public List<Localidad> dameLocalidades() {
        return miLocalidadJpa.findLocalidadEntities();
    }

    public List<Marca> dameMarcas() {
        return miMarcaJpa.findMarcaEntities();
    }

    public List<Modelo> dameModelos() {
        return miModeloJpa.findModeloEntities();
    }

    public List<Operacion> dameOperaciones() {
        return miOperacionJpa.findOperacionEntities();
    }

    public List<PedidoRepuesto> damePedidosRepuesto() {
        return miPedidoRepuestoJpa.findPedidoRepuestoEntities();
    }

    public List<Proveedor> dameProveedores() {
        return miProveedorJpa.findProveedorEntities();
    }

    public List<Reparacion> dameReparaciones() {
        return miReparacionJpa.findReparacionEntities();
    }

    public List<Repuesto> dameRepuestos() {
        return miRepuestoJpa.findRepuestoEntities();
    }

    public List<Segmento> dameSegmentos() {
        return miSegmentoJpa.findSegmentoEntities();
    }

    public List<Severidad> dameSeveridades() {
        return miSeveridadJpa.findSeveridadEntities();
    }

    public List<Taller> dameTalleres() {
        return miTallerJpa.findTallerEntities();
    }

    public List<TipoOperacion> dameTiposOperacion() {
        return miTipoOperacionJpa.findTipoOperacionEntities();
    }

    public List<Turno> dameTurnos() {
        return miTurnoJpa.findTurnoEntities();
    }

    public List<Vehiculo> dameVehiculos() {
        return miVehiculoJpa.findVehiculoEntities();
    }
     public List<EstadoEjecucion> dameEstadosEjecucion() {
        return miEstadoEjecucionJpa.findEstadoEjecucionEntities();
    }
      public List<DetalleEjecucion> dameDetallesEjecucion( ) {
        return miDetalleEjecucionJpa.findDetalleEjecucionEntities();
    }
       public List<ReparacionEnEjecucion> dameReparacionesEnEjecucion( ) {
        return miReparacionEnEjecucionJpa.findReparacionEnEjecucionEntities();
    }
}
